package 数组;

import java.util.*;

/**
 * @Author Weton Li
 * @Date 2021/4/29 21:32
 */
public class 消失的数字 {

    public static List<Integer> method(int[] arr){

        int n = arr.length;
        for (int num : arr) {
            int x = (num-1)%n;
            // 第二次重复的数的那个位置的数用于不会发生值的改变。通过此点再处理完整个数组中，判断是否小于arr.lenth，即可通过位置下标+1断定消失的数字。
            arr[x] += n;
        }
        ArrayList<Integer> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            if (arr[i] <= n) {
                list.add(i+1);
            }
        }
        return list;

    }

    public static void main(String[] args) {
        int[] input = {4,3,2,7,8,2,3,1};
        System.out.println(method(input));
    }
}
